// pages/mine/mine.js
import { setUserInfo, getUserInfo, setWxUserInfo, getWxUserInfo, setUserGrade } from '../../utils/userInfo';
import Toast from '@vant/weapp/toast/toast';
import Notify from '@vant/weapp/notify/notify';
import { phoneTest } from '../../utils/regularIpt'
Page({
  /**
   * 页面的初始数据
   */
  data: {
    show: false, // 控制底部弹出层
    showWxLogin: false, // 弹框里是否显示微信登录
    showPwd: true, // 是否隐藏密码
    // pwdInputType: 'password', // 密码输入框的type值
    checked: false, // 协议单选框，默认不选中
    formData: {
      phone: '',
      password: '',
    }, // 存放表单数据
    avatar: '../../images/default-avatar.png', // 显示头像
    nickname: '', // 昵称
    isUserInfo: false, // 用户信息
    phoneIptValue: '', // 手机号输入框的value
    openid: '', // 用户的openid
    wxAvatarUrl: '', // 微信用户头像
    wxNickName: '' // 微信用户昵称
  },

  // 跳转到用户发布的信息页
  toUserDiscussDetail() {
    const { _id, avatar, nickname } = getUserInfo();
    wx.navigateTo({
      url: `../userDiscussDetail/userDiscussDetail?uid=${_id}&avatar=${avatar}&nickname=${nickname}`,
    })
  },
  // 弹出底部Popup组件
  showPopup() {
    this.setData({
      show: true
    });
  },
  // 关闭底部Popup组件
  onClose() {
    this.setData({
      show: false,
    })
    this.onLoad();
  },
  // 密码输入框改变时，将value存入 this.data.formData
  handleChangePwd(e) {
    console.log(e.detail.value);
    this.setData({
      formData: {
        password: e.detail.value,
      }
    })
  },
  // 显示密码
  yesPwd() {
    this.setData({
      showPwd: false,
    })
  },
  // 隐藏密码
  noPwd() {
    this.setData({
      showPwd: true,
    })
  },
  // 跳转至我的计划页面
  toSchedule() {
    wx.navigateTo({
      url: '../../packageD/pages/schedule/schedule',
    })
  },
  // 跳转至学习天地页面
  toStudy(){
    wx.navigateTo({
      url: '../../packageD/pages/study/study',
    })
  },
  // 跳转至实用工具页面
  toTools(){
    wx.navigateTo({
      url: '../../packageD/pages/tools/tools',
    })
  },
  // 跳转至设置页面
  tosetup() {
    wx.navigateTo({
      url: '../../packageD/pages/setup/setup',
    })
  },
  // 跳转到图形分析引导页
  toChartBefore() {
    if (getUserInfo()) {
      wx.navigateTo({
        url: '../../packageD/pages/chartBefore/chartBefore',
      })
    } else {
      Notify({ type: 'danger', message: '请先登录' });
    };
  },
  // 跳转到注册page
  toRegPage() {
    wx.navigateTo({
      url: '../../packageD/pages/register/register?params=register&phoneIptValue=',
    })
  },
  // 离开号码输入框时触发
  bindblurPhone(e) {
    this.setData({
      phoneIptValue: e.detail.value
    })
  },
  // 忘记密码Page
  toLosePasswordPage() {
    const { phoneIptValue } = this.data;
    const testRes = phoneTest(phoneIptValue);
    if (testRes === '') {
      wx.navigateTo({
        url: `../../packageD/pages/register/register?params=losePassword&phoneIptValue=${phoneIptValue}`,
      })
    } else {
      Toast(testRes);
    }
  },
  // 点击登录按钮
  loginFormSubmit(e) {
    console.log('登录提交的数据', e.detail.value);
    const { agreement, phone, password } = e.detail.value;
    if (agreement.length != 0) {
      wx.cloud.callFunction({
        // 云函数名称
        name: 'reqUserAPI',
        // 传给云函数的参数
        data: {
          reqName: 'login', // 声明类型
          phone,
          password,
        },
      })
        .then(res => {
          const { isExistPhone, userInfo, isPasswordValid, userGrade } = res.result;
          if (isExistPhone) {
            if (isPasswordValid) {
              Toast({
                type: 'success',
                message: '登录成功',
                duration: 1000,
                onClose: () => {
                  // 登录成功后，将获取的用户信息存入缓存，关闭弹框
                  setUserInfo(userInfo);
                  setUserGrade(userGrade);
                  this.setData({
                    show: false,
                  });
                  this.onReady();
                },
              });
            } else {
              Toast.fail('请检查手机号或密码是否正确');
            }
          } else {
            Toast.fail('用户不存在');
          }
          console.log(res.result);
        })
        .catch(console.error)
    } else {
      Toast('请先勾选协议');
    }
  },
  // 点击微信登录，跳转page
  toWxLoginPage() {
    const that = this;
    // 查看是否存在微信用户信息
    if (getWxUserInfo()) {
      // 获取微信用户信息
      const { nickName, avatarUrl, openid } = getWxUserInfo();
      that.setData({
        showWxLogin: true,
        openid,
        wxAvatarUrl: avatarUrl,
        wxNickName: nickName
      })
    } else {
      that.getWxProfile();
    }
    // console.log(that.data);
  },
  // 获取微信用户信息，并存入缓存中
  getWxProfile() {
    const that = this;
    wx.getUserProfile({
      desc: '用于完善会员资料',
      success: (res) => {
        const { nickName, avatarUrl } = res.userInfo;
        // 调云函数获取微信用户openid
        wx.cloud.callFunction({
          name: 'getProfile',
          complete: res2 => {
            console.log('callFunction test result: ', res2.result)
            const { openid } = res2.result;
            // 获取微信用户头像和昵称
            setWxUserInfo({ ...res.userInfo, openid }); // wx用户信息存入缓存
            that.setData({
              showWxLogin: true,
              openid,
              wxAvatarUrl: avatarUrl,
              wxNickName: nickName
            })
          },
        });
      }
    });
  },
  // 点击手机号登录，跳转手机号登录
  toLoginPage() {
    this.setData({
      showWxLogin: false,
    })
  },
  // 微信账号登录逻辑
  wxLoginFormSubmit(e) {
    console.log('登录提交的数据', e.detail.value);
    const { agreement } = e.detail.value;
    const { openid, wxAvatarUrl, wxNickName } = this.data;
    if (agreement.length != 0) {
      wx.cloud.callFunction({
        // 云函数名称
        name: 'reqUserAPI',
        // 传给云函数的参数
        data: {
          reqName: 'wx-login', // 声明类型
          openid,
          phone: '',
          password: ''
        },
      })
        .then(res => {
          const { isExistOpenid, userInfo, userGrade } = res.result;
          if (isExistOpenid) {
            Toast({
              type: 'success',
              message: '登录成功',
              duration: 1000,
              onClose: () => {
                // 登录成功后，将获取的用户信息存入缓存，关闭弹框
                setUserInfo(userInfo);
                setUserGrade(userGrade);
                this.setData({
                  show: false,
                });
                this.onReady();
              },
            });
          } else {
            // 把用户信息传到绑定页面
            const wxuser = JSON.stringify({ openid, wxAvatarUrl, wxNickName });
            wx.showModal({
              title: '用户绑定提示',
              content: '当前微信用户未绑定错题集账号',
              confirmText: "去绑定",
              success(res) {
                if (res.confirm) {
                  wx.navigateTo({
                    url: '../../packageD/pages/bindUser/bindUser?wxuser=' + wxuser,
                  })
                }
              }
            })
          }
          console.log(res.result);
        })
        .catch(console.error)
    } else {
      Toast('请先勾选协议');
    }
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 清空输入框的value，刷新popup组件
    this.setData({
      formData: {
        phone: '',
        password: '',
        checked: false,
      },
      showPwd: true,
      pwdInputType: 'password',
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    console.log(getUserInfo());
    const { avatar, nickname } = getUserInfo();
    if (getUserInfo()) {
      this.setData({
        isUserInfo: true,
        avatar,
        nickname
      })
    }
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})